72 Hour GDC

The next 72 Hour Game Development Competition is coming June 25, 2004. Keep checking the [GDC Board] for updates. Get prepared!
[RULES]

Theme suggestions can be given immediately. On June 11, when I announce it, stage 1 voting will begin. On June 18, stage 2 voting will begin. On June 25, at exactly 12:01 PM EST (that’s right after noon), the results of the voting will be announced and the competition will begin. On June 28, at exactly 12:01 PM EST, the competition will be over and no more entries will be accepted.

June 2004 Code Fest

Judges have been selected and the topic has been chosen. This time contestants will be making sword-based combat games! Some part of the game must include…

Visit [GameDev] for more information.
Judges have been selected and the topic has been chosen. This time contestants will be making sword-based combat games! Some part of the game must include using a sword to engage in combat. While it may sound a little limiting in the creativity department, we encourage the contestants to push it as far as it will go. We’re all looking forward to a very fun competition. Good luck!

Visit [GameDev] for more information.

TagML (design ideas)

Conversation from an AIM message between me and Flax.
tgraupmann648: I had a wicked idea before I fell into deep sleep last night
Flax0000: Oh yer?
Flax0000: What was it?
tgraupmann648: I was thinking about connecting the model editor to a mysql database
tgraupmann648: I have this concept of a virtual workspace
tgraupmann648: So a person has complete control over their workspace
tgraupmann648: But you can flip through other users using the tool to watch what they are making
tgraupmann648: Similar to Linux how you can flip the TTY or workspaces
tgraupmann648: Eventually it could evolve into collaborative modeling
Flax0000: cool
tgraupmann648: On the technical side, I would just need to convert from C++ to C# and add a web reference
tgraupmann648: The web reference could connect to my site using web services that talk to a mysql database
tgraupmann648: I’ll save the idea, short term I’ve added the ability to zoom by scrolling with the mouse

TagML (Intentional Axis Locking)

TagML is a new 3d model editor / animator. The [source] and [build] are publically available. The latest feature adds the ability to lock an arbitrary axis. As requested, this will give you better precision while animating models. You can also lock by the strafe vector (side to side) and up vector (up and down) relative to the viewports. Or you can lock by axis. Oh, and you can zoom by scrolling the mouse.

ZBrush (Update)

I purchased a license for ZBrush 2.0. It’s just like they say, digital putty. I’m going through every tutorial and that doesn’t even scratch the surface of what this tool can do. Here is my first attempt at digital sculpting using the Sphere3D method. Like so many other posts at ZBrush Central… “My First Head”…

TagML (latest)

TagML is a new 3d model editor / animator. I have made the [source] and [build] publically available. The new feature that I just added is a better keyframe display bar. Hopefully this looks like a hybrid style of PhotoShop and Flash. If it’s not intuitive let me know. As always, suggestions are welcome.
Bones (C) The Game Creators Ltd.
Bones (C) The Game Creators Ltd.

Progress Update (TagML)

I recently created a panel base object which the toolbars inherit to allow the use of textures in the toolbar buttons themselves. I moved the keyframe track display into its own panel. I still have the intent that the keyframe display will also be textured. I just finished the code that will allow the animation bar buttons to use textures. And I spent a little time drawing the icons to match the shaded background.
Android (C) The Game Creators Ltd.
Android (C) The Game Creators Ltd.

HowTO IIS

When you start ASPX and ASMX programming, the default IIS setings are commonly messed up. The solution is not well documented. The configuration process requires this command in order to work properly.

This properly configures IIS:
aspnet_regiis.exe -i

aspnet_regiis can normally be found:
C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322

These are common commands for IIS:
iisreset /start
iisreset /status
iisreset /stop

Progress Update (TagML)

You fans out there have been inquiring what I’ve been doing the last couple months since my last post. I’ve been quite busy. During the daylight hours, I’ve been testing the next generation bidding system at INSP. And in my night hours, I’ve joined FellStorm Software, a game development group, working on an action RPG. As you can see glimpsing at the pic to the left, I’ve designed a model editor from scratch, capable of importing 3ds files or creating animated models. Basically it’s an animation tool which saves models in a new Tagml format. The tool is unique in that it will take models straight from 3d studio. The internal structure is all vector based, so it’s portable to OpenGL or DirectX.
Alien Hivebrain (C) The Game Creators Ltd.
Alien Hivebrain (C) The Game Creators Ltd.

HowTo Check the Image Format in C#

This example C# script is a universal example for how to extract image data from just a byte array. You can extract file type and dimensions, easily.

//check image dimensions 
System.Drawing.Image logoImage = System.Drawing.Image.FromStream(new MemoryStream(imageData)); 
if(logoImage.PhysicalDimension.Height > 100 || logoImage.PhysicalDimension.Width > 80) 
        throw m_ef.CreateException("Incorrect Image Dimensions!");

ImageType imageType; 
//determine file type 
if(logoImage.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg)) 
        imageType = ImageType.JPG; 
else if(logoImage.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Gif)) 
        imageType = ImageType.GIF;

HowTo Setup A MySQL Database

This article shows you how to connect your Perl/PHP scripts to a MySQL database.

BASIC OVERVIEW

    Start by skimming the mysql site at MySQL.com.

    The download section has medium and max grade versions of the my sql database. Free to download.

    You might even want to get a copy of "MySQL Control Center" which let's you administer that database and users with a handy GUI.

    Under Contributed APIs, there is a link to "DBI" which let's you connect to MySQL with Perl. There are other drivers down there to connect to whatever platform you want.

    Indigoperl is a good installation that comes with Apache and ModPerl. It's available at indigostar.com

    It doesn't hurt to get yourself a copy of activeperl from activestate.com.

    Afer installing activeperl, just bring up a command prompt and type: "ppm install DBI". That will install all the DBI perl related drivers for you. "perldoc DBI" at the command prompt will give you a lot of information about how to use it.

    "ppm install DBD::mysql" is supposed to work, but has a conflict. So you need to use: "ppm install http://theoryx5.uwinnipeg.ca/ppms/DBD-mysql.ppd" which installs the mysql wrapper that you need.

    You have to be in ./indigoperl/perl/bin and run the command "ipm install DBI". That will install the drivers for indigoperl/apache.

    Similarly to install the mysql wrapper for indigoperl/apache type: "ipm install http://theoryx5.uwinnipeg.ca/ppms/DBD-mysql.ppd".

    Use the admin tool to create user "db_user" with password "password" granting permissions to at least do queries on tables.

    You may need to type mysqld.exe to startup the mysql database. Bring up the client using mysql.exe. Paste the following to create a table to work with.

    
    create database qafw01;
    
    use qafw01;
    
    drop table TestCase;
    drop table TestExecution;
    
    /*
     ....
     */
    create table TestCase
    (
    	TestCaseID   INT AUTO_INCREMENT PRIMARY KEY,
    	Description  TEXT,
            RunInterval  INT,
    	QueueWebUrl  TEXT,
    	AppName      TEXT,
    	CommandLine  TEXT,
            TestType     TEXT,
            ScriptOutput TEXT,
            LogType      TEXT,
            CaseStatus   TEXT
    );
    
    /*
     ....
     */
    create table TestExecution
    (
    	TestExecutionID   INT AUTO_INCREMENT PRIMARY KEY,
    	TestCaseID        INT,
            LastTimeRun       TEXT,
            Result            TEXT,
            ResultDescription TEXT
    );
    
    -- Setup the following contraints
    
            alter table TestExecution
            add foreign key(TestCaseID) 
            references TestCase (TestCaseID);
    
    -- Create some dummy data to query.
    
    INSERT INTO TestCase
    (Description, RunInterval, QueueWebUrl, AppName,
    CommandLine, TestType, ScriptOutput, LogType,
    CaseStatus)
    VALUES ('Verify...', '3600', 'http://...',
    'Search O&O', 'idptests00tc0001.pl',
    'Perl', 'PIPE', '|', 'A');
    

    Here's an example of a Perl script that works for me in indigoperl. Just put it in ./indigoperl/apache/cgi-bin/ .

    
    #!perl
    
    # In DBD there is "No close statement".
    #
    # Whenever the scalar that holds a database or statement handle
    # loses its value, Msql chooses the appropriate action (frees the
    # result or closes the database connection). So if you want to free
    # the result or close the connection, choose to do one of the following:
    #
    #         undef the handle 
    #
    #         use the handle for another purpose
    #
    #         let the handle run out of scope 
    #
    #         exit the program.
    
    use strict;
    
    #To connect to the mysql database
    use Mysql;
    
    
    #FOR HTTP IO
    use CGI;
    
    #autoflush
    $| = 1;
    
    #HTML FORMAT OUTPUT VARIABLE
    my $co = new CGI;
    
    #START HTML PAGE
    print $co->header;
    
    my $host     = "localhost";
    my $database = "qafw01";
    my $user     = "db_user";
    my $password = "password";
    
    # Connect to database
    my $dbh = Mysql->connect($host, $database, $user, $password);
    
    # Do a query
    my $sql_statement = "SELECT * FROM TestCase LIMIT 1;";
    my $sth = $dbh->query($sql_statement);
    
    # Fetch the result
    my %result = $sth->fetchhash;
    
    # Print the output
    foreach my $key (keys %result)
    {
       print "$key: $result{$key}" . $co->br . "n";
    }
    
    exit;