Friday, August 10, 2012

New Game Programming Class starts Aug 16

The next game programming class starts on Aug 16, 2012.  In the next 6-week class, I've decided to teach either iPhone game software programming or Windows XNA game software programming, depending on how many students enroll and what their interests are. There's no sense teaching an Apple programming class if all the students are Windows users :-)   So far, I have 4 votes for XNA/Windows games and 0 votes for iPhone games.  Show up on the first day and cast your vote!

This will be mostly a software programming class.   But I plan to spend half of each class playing network games.  We will create a network game that students can play together in the class room.  Students will get to create their own 3D models to play in the game.   Game beta testers are welcome!    This class is free and open to all game programming enthusiasts.

The class is a 6-week session that meets each Thursday from 6PM to 8PM. For directions and other details, click this link. Here's the class advertisements for this class.


Click this link to read the Summer 2012 Duluth Parks and Recreation flyer advertising this class.  The above clipping is on page 10.

Friday, October 28, 2011

iPhone Game Programming: How to Create a Sprite Sheet Animation using 3DS Max and Cocos2D

This page under construction!
I just started posting this long tutorial this morning... come back tomorrow and it should be finished.

=======

In this tutorial, I will show you how to
  • create the simple animation loop shown below using 3DS Max
  • convert your rendered animation image sequence to a sprite sheet 
  • create an iPhone app to play the animation
Here's the iPhone animation that we made in our first iPhone Game Programming class yesterday.  This is a screen capture video of the sprite sheet animation running in the iPhone sumulator in XCode.  





Tuesday, May 31, 2011

New Game Programming Class starts July 14

The next game programming class starts on July 14.  In the next class I decided to teach iPhone game software programming.  This will be mostly a software programming class.   But I plan to spend half of each class playing network games.  So, game beta testers are welcome!

Here's the class advertisements for the next two 6-week class sessions.  Notice that the class that starts on June 2 is on creating Anime-style videos.  The game programming class starts right after that one.
 

Thursday, June 17, 2010

NEW CLASS: 3D INTERIOR ARCHITECTURAL RENDERING


A NEW CLASS ON INTERIOR ARCHITECTURAL RENDERING...
Our next class session for the 3D Animation Special Effects class just started last week.  Check it out here:
http://filmfx.blogspot.com/
Last week, students in that class voted to do an Interior Architectural Rendering project using 3D Studio Max and the Mental Ray renderer.  We'll use 3D Studio Max to model a room, furniture, interior lighting, and materials.  We use the 3D Studio Max "cloth" feature.  And, we'll practice using Mental Ray "Final Gather" advanced rendering settings for interior lighting. As always, classes are free to anyone with an interest and a laptop that you can bring to class.  You can follow our progress for that class at http://filmfx.blogspot.com/.

THE XNA GAMES CLASS...
Don't worry, the XNA Games Class isn't finished yet.  I've added alot of new features to the game source code this week.  I'll post the project here in a week or two after killing a few of the remaining bugs.

Thursday, June 10, 2010

Encryption

hey russ you mentioned a program to be it was like izma or something could you give me the name of it thanks

Friday, May 21, 2010

THOMAS' PURPLE TANK OF DOOM

Thomas made a really cool modification of the tank model in class this week.  It's transparent.  And, it has only two wheels.  Here's a render of the tank on the moon's surface.  Cool tank Thomas!
 Here's another picture that I rendered with a clay material so you can see the details better.
Thomas asked me to convert it to FBX format so that he could load it into the game. Here's the FBX file.  And here's the original GMAX file.

One thing you should be careful of when you load this model.  Since some of the parts were removed from the original tank model, the source code will probably choke when it tries to load those missing parts.  So, you may have to do some modifications to the source code before it will load this tank FBX file.  Here's the tank parts hierarchy of original tank.  I think the game source code is going to try to load each of those part names shown in the picture.   So, you will have to go through the source code and remove the parts that try to load or manipulate those part names.

Awesome looking tank, Thomas!

TANK MODELS


Here's the tank model from the Microsoft XNA sample game that we played with in the last class. I zipped up all the tank model files and posted them for you to download.  Click on this link to download a zip file that contains these files: 
1) Tank.FBX = The original model included with Microsoft's sample game.
2) Tank.3DS = I converted the FBX file to 3DS format using the Autodesk FBX Converter utility. Gmax can import 3DS files.
3) Tank.GMAX = I imported the 3DS file and saved it as a GMAX file so you can edit it.
4) engine_diff_tex.tga = The texture file for the tank included with Microsoft's sample game. If you open the GMAX file, make sure to keep this texture file in the same directory so that it can load the textures with the tank.

Also, click here to go to Microsoft's download page for the source code for this tank game XNA sample project.

Russ DeWitt

OLIVER'S SICKLE SWORD


Several of you who have been using the Siege Editor program to create your own custom Dungeon Siege maps to play in the Microsoft Dungeon Siege game.  And you've probably wondered how to import a 3D object from the game (like a sword) into Gmax so that you can change it.  Here are instructions for doing that.

Instructions for loading this sword into GMAX.
=======================================
1) First, unpack the "objects.dres" (from your Dungeon Siege game directory) using the "Tank Viewer" program.
2) Then, install a special update of the SiegeMax program called "SIEGEMAX UPDATE 1.3".  It's free.  Use Google to find it.  That version of SiegeMax allows you to import ".ASP files" (like this sword) from the unpacked objects.dres file from game.
3) Next, start SiegeMax (version 1.3 that you installed).  Right click the screen and select "import" from the menu.  Go to the directory where you unpacked your objects.dres file and load this file:   "...\art\meshes\weapons\sword\m_w_swd_050.asp"
4)  After it is loaded into the SiegeMax Gmax program, save it as a Gmax file.

Click here to download Oliver's way-cool looking "Sickle Sword" saved in Gmax format.  In Gmax, I added a smiley face on the end of the sword and exported it back into the game (see the picture above  :-)

Russ DeWitt

Monday, May 17, 2010

GAME PROGRESS

I picked a demo game project called "Collision with a Heightmap" from Microsoft's XNA website.  Here's the link:  http://creators.xna.com/en-US/sample/collision3dheightmap

I plan to modify the game to have multiple balls (network players) on the screen, where each ball is controlled by a different player.  When 2 balls collide, they explode!  It seems like a good starting place for our game.  After we get the multiplayer networking stuff working, we can just replace the ball with a player's character and then animate it's running motion as it moves around. 

I finished adding my non-blocking UDP Client code to a demo.  I need to update the UDP Server to match, and then begin testing.  The idea behind adding the UDP Client code to the game is for the game to periodically send my player's position to the game server.  The server will collect everybody's position and send it back to each networked game.  As each game get's other player's position information it can move the position of the other players ball in it's own screen.

Here's a picture of the game screen:


Russ DeWitt

A GUI NON-BLOCKING CHAT PROGRAM

Here's a GUI version of the non-blocking UDP Client program.  Click this link to download the Visual C# project.

UdpClientGui_NonBlocking.ZIP

Enjoy!
Russ DeWitt




 

A FANCIER CHAT PROGRAM

Here is a fancier version of the UDP client programs that uses "non-blocking" programming. 

The earlier version that I posted is very simple.  Here's how the simple verison works:

STEP1:  WAIT for the user to input a message.  When the user finally hits the Enter key, then transmit the message to the server and go to step 2.
STEP2:  WAIT for the server to send back a message.  When a message is received from the server, print it and then go to step1.

The problem with that approach is that while the program is waiting in STEP1 it will never check for a message from the server.  If the user never hits the Enter key, the program will never go to step2 and will never check for a message from the server.   And while the program is waiting in STEP2 it will never let the user enter a new message.  If the server never sends a message the program will be stuck in step 2 and will never go to step1.

A better approach would be to not WAIT at each step.  In STEP1, just check to see if the user hit a key.  If he didn't, then go to step 2.  In step 2, check to see if a message was received from the server.  If no message was received, go to step1.  That's called a "non-blocking" approach because the program doesn't get stuck in any particular place.

Click this link to download the Visual C# project for the 'non-blocking' version of the UDP Client program.

 UdpClientConsole_NonBlocking.ZIP

A SIMPLE CHAT PROGRAM

Here are my simple console based UDP client and server programs.  Click these links to download the Visual C# projects.

UdpClientConsole.zip
UdpServerConsole.zip

This is just a simple example of how to make one program talk to another program.  In this example, the UDP Server program on one computer "listens" for messages from the UDP Client program on another computer.  When you type a message in the UDP Client program and hit return, the message is sent to the UDP Server program.  The job of the UDP Server program is to just send any text message that it gets back to the Client program that sent it, but in upper case letters.  Try it out.

Russ DeWitt

Thursday, May 13, 2010

Webhosters

hey russ i was gonna tell you the web hoster i use for my website:
http://www.000webhost.com/

Its 4.95$ a month
-Unlimited FTP Accounts
-Unlimited Mysql Databases
-Unlimited Bandwidth
-Unlimited File Storage
-Url Forwarding
-and more things...

HOW TO SAVE YOUR GMAX OBJECT AS AN FBX FILE

Suppose you've made a really cool object in Gmax and now you want to load it into your XNA Game project.  But the "save" button in Gmax only lets you save it as a ".Gmax" file!  And XNA requires that all of your 3D mesh files be in Autodesk's FBX format.  Here are my instructions for exporting an object from Gmax as an .OBJ file, and then converting it to .FBX file so that it can be loaded in a Microsoft XNA program. Enjoy!


PART1: DOWNLOAD AND INSTALL THE EXPORT AND CONVERT SOFTWARE
==========================================================
First, download these two export script tools:
Go to this web page "http://www.xzzy.org/halo/gmax_render/"
1) Download these 2 files:
a) On that web page, scroll down a little and you will see this link: "http://xzzy.org/halo/gmax_render/GMaxSLGRAB.zip". Click it to download the file 'GMaxSLGRAB.zip'
b) Scroll down a little more and you will see this link: "Xzzy's .OBJ Tool - A simple maxscript...". Click it to download the file 'xzzy_obj_tool.ms'
2) Go to Autodesk's web site and download the latest version of the free FBX Standalone Converter Utility.
Get either the 32bit or 64bit version depending on your OS.
a) Here's the link for downloading the utility: http://usa.autodesk.com/adsk/servlet/pc/item?siteID=123112&id=10775855
b) Here's a link to the PDF help file for the utility: http://images.autodesk.com/adsk/files/fbx_2011_2_converter.pdf
3) Install the Autodesk FBX Converter utility.

PART2: EXPORT SOMETHIN'
========================
1) Copy the GMax script file "xzzy_obj_tool.ms" to this Gmax directory: "C:\gmax\scripts".
2) Start Gmax.
3) Create a teapot object to export.
a) Click the "Teapot" button.
b) Check the "Generate Mapping Coords" check box at the very bottom, below the Teapot button.
c) Drag in any window to create the Teapot object.
d) Right-click on the Teapot object and select "Convert to editable mesh" in the pop-up menu.
4) Outside of Gmax, run the program "GMaxSLGRAB.exe".  A little window will pop-up containing a "Grab" button.
5) Back in Gmax, select Gmax menu "MAXScript -> MaxScript Listener".  A text window will open.
6) Select Gmax menu "MAXScript -> Run Script".  Select the script file "xzzy_obj_tool.ms" and click OK.
7) In Gmax, select the "Utilites" tab.  It's in the pannel on the right of your screen.
At the top of that panel, it's the "hammer" on the far right tab.
Under the Utilies tab, click the "MAXScript" button.
At the very bottom is the word "Utilies" with a text box below it.
Expand the text box and click "Obj Import/Export".
Clicking that will cause 2 more buttons to appear below that.
Click the "Export" button.
Alot of text will scroll by in the Listener window.
Wait for the text to stop scrolling (about 15 seconds for a Teapot).
8) Click the "Grab" button.
It will copy the text from the Listener window and prompt you to save the file.
Save the file to your desktop with the name "Teapot.obj".
9) Startup the Autodesk FBX Converter stand-alone utility.
In the utility, open your "teapot.obj" fle.
(Note: You can drag and drop your .Obj
file onto the FBX Converter program window to open the file.)
Make sure you convert it to "Binary" FBX format, not in Ascii format.  See my note below.
Click the "convert" button and save your file as FBX format.


Russ' Note for step #9: In my experience, the Microsoft XNA game programming software **HATES** 3d files that are saved in FBX "ASCII" (Text) format.  When you convert your Obj file, you must save it in FBX "Binary" format.  If you try to load an FBX ASCII formatted 3D mesh file in your XNA game, the Visual-C# compiler crashes intermediately without any warnings when you hit F5 to run in debug mode!  -- That's yet another reason to "save often" as you are writing your software program :-)

Tuesday, May 11, 2010

EVERYBODY'S AN ADMIN!

I gave everybody "admin" privileges. This is your class, your blog. Feel free to change anything you want. Russ.

Monday, May 10, 2010

OLIVER'S COOL ARTWORK

Here's some artwork from Oliver.



Winsock

Hey Cody.  I found several better examples for writing a simple UDP client and server program in C#.  Here's what I'm looking at using right now:
http://www.java2s.com/Code/CSharp/Network/BinaryUdpClient.htm
You don't have to load the Winsock component with this code.
There are several related links at the bottom of that page.
Hang on and I'll post a working program to this blog in a day or 2.

BTW, I started getting hacker emails wanting access to this site.  Someone from another country sent me an email with your name in the subject asking me to send them an invitation.  So I just enabled "privacy mode" so only people in our class can view the site.  We can turn it off again later if anyone wants to.
Russ

Sunday, May 9, 2010

Winsock

hey does anyone have the winsock tutorial that you can send me thanks

GAME ARTWORK

Here is some game artwork from Andrew. Click the image to enlarge it.






Thursday, May 6, 2010

OUR SHINY NEW TEAM BLOG!


Hey everybody,
OK, voting on the website name is over.  I received a lot of great suggestions.   But, in the end I had to choose only one.  To make the choice unbiased, fair and as pseudo-random as possible, I put each of the blog names on little slips of paper, said some magic words over the wadded papers, and then through them over my shoulder, down the stairs to my dog.  He ate all the losing entries.  But, he spared this one winning name for our Team Blog site: "xnagamers.blogspot.com" from Mr. Cody Mini.   [CROWD APPLAUDS LOUDLY!]

The runner-ups were "threeofspades.blogspot.com" by Mr. Oliver Fuxel, and “makegamez.blogspot.com" by Mr. Troy Hildebrand!    [CROWD APPLAUDS POLITELY].   Oliver, “threeofspades” was an excellent suggestion, except that some dirty blog-name squatter already snagged that one  :-0 

By the way, my personal favorite was "WrathOfTheGreatSlar.blogspot.com" (a nod to Rick Moranis in the movie Ghostbusters).  But since my dog and I were on the voting committee, I excluded my vote to minimize the appearance of conflict of interest.

I'll send out invites to you all to join the Team Blog tonight!  As soon as you join, feel free to post a hello message!

Russ DeWitt
________________________________________
From: Russ DeWitt [mailto:dewitt.russ@gmail.com]
Sent: Friday, April 30, 2010 6:31 PM
To: 'Russ DeWitt'; Cody Snyder; Cody Snyder; Doug Z.; Jonathan Paolozzi; Mr. MUP jr.; Naeem; Oliver; Oliver; Thomas Mulkey; Troy Hildebrand
Subject: Help me pick a name for the 'Team Blog' web site for our 3D Games class
Hi All,
I’m excited about our class project.   As we discussed, we plan to make a network game, 3rd person shooter, low-res but customizable character figures for each of us, sort of a RPG with RPGs (roll playing game with rocket propelled grenades) 
I plan to setup the ‘Team Blog’ site tonight so that we can all share our game ideas, software code and game content artwork for our game project.  I’ll make the website “private” so that only we can view and post to the site.  I attached everyone’s email address (Microsoft outlook format).  Let me know if your information looks correct.

I don’t remember the website names that everyone came up with in our class yesterday.  Can anyone remind me?   To see if a URL name is free for us to use, you can just type in the name and a blotspot page will tell you if it’s available.  I checked and found these names are free for us to use:

http://mygamerulez.blogspot.com/
http://atomicgamez.blogspot.com/
http://duluthgamerz.blogspot.com/
http://xnagamerz.blogspot.com/
http://xnagamers.blogspot.com/
http://9gamerz.blogspot.com/
http://9gamers.blogspot.com/
http://10gamers.blogspot.com/
http://gamedevelper.blogspot.com/
http://gamedevelperz.blogspot.com/
http://gameprogrammerz.blogspot.com/
http://prettygoodsw.blogspot.com/
http://prettygoodgamez.blogspot.com/
http://makemeagame.blogspot.com/
http://makegamez.blogspot.com/
http://mynetworkgame.blogspot.com/
http://mynetgame.blogspot.com/
http://woweegames.blogspot.com/   <===one of my favorites…
http://bazookagames.blogspot.com/
http://funkiegames.blogspot.com/   <===one of my favorites…
http://funkiegamers.blogspot.com/
http://bastablon.blogspot.com/    (for “Hitchhiker” fans :-)
… sorry, these are already taken:
Nope… http://milliways.blogspot.com/       (already taken)
Nope…  http://beeblebrox.blogspot.com/  (already taken)
Nope…  http://zaphod.blogspot.com/           (already taken)
But these are available…
http://ifragu.blogspot.com/
http://igotfragged.blogspot.com/
http://pleezdontfragme.blogspot.com/
http://ifraggedmyself.blogspot.com/
http://mutantpiratezombies.blogspot.com/
http://mutantpiratezombiesfromouterspace.blogspot.com/
http://jackintheboxwithagun.blogspot.com/
http://jackintheboxwithabazooka.blogspot.com/
http://bazookaz.blogspot.com/
OK, so “jackintheboxwithabazooka” is probably too long to type in.  We probably want something a little shorter than that.  Feel free to email me your web site name ideas. 
Russ DeWitt
















Bad Kitty. No!

DeWitt.Russ@gmail.com
678-575-2722 (Cell)

Photo-Realistic 3D Animation and Video Effects
Visit these web sites for the 3D animation class:
http://filmfx.blogspot.com
http://3drobots.blogspot.com