Weekly Update
This weekly update is a bit late, or a bit early, depending on how you see it. (c:
Recommended Links for Beginners
Bill Reiss is pumping out XNA tutorials, and had eight at last count. They are for complete beginners, so if you like XNAtutorial, you will like what he is doing too.
Brian Leip released Missile Commander, with original graphics. (Game Zip) (Source Zip)
PJ Bennett, one of the xna360homebrew.com contestants, released a supposedly playable version of Bozotron: 2064. It didn’t run out-of-the-box for me, though, and I didn’t have time to tinker. (Game and Source Zip) (Screenshot)
Glenn Wilson has put together a keyboard component.
Machaira has released a Screenshot Component, so you won’t have to code in-game screenshot saving by yourself. (Component Zip)
PsyCadelik has made Psykoban, a beautiful Sokoban clone, which you can actually play. (Game and Source Zip) (Screenshot)
More Advanced Stuff
Mitch Walker talks about Game.GameServices, which are really cool. It will be a while before we get there with XNAtutorials, though.
Mark has put together a vector renderer class. (Source)
Jacob Repp has made a 3DS model loader. (Loader Source) (Wrapper Source)
Games without Source
Lawrence is working on porting his code to XNA, and has . He might not share his source, but he is asking if you want to know anything in particular, as he shares code snippets. (Game Zip) (Screenshot)
Toolkit Updates
Microsoft released the October version of DirectX SDK. For XNA, the main difference is that they have improved the XACT interface, but in general you can save yourself the download. David Weller says it’s does not officially support XNA, but it’s working fine for me.
If you really want to be cutting-edge, try out the beta of the Visual C# Service Pack. It might help with stability, but I’m waiting for the final release. If you go for it, make the final product better for me, by reporting problems. (c:
John harding release Sprite Strip composer, which stitches together several images into a collage. Mark Coffman has put together clear instructions. (Tool Zip)
XNA News
Frank Savage does an hour-long video about the Spacewar Starter Kit, outlining improvements coming up, and mentions that the two upcoming starter kits will be a racing game and an advanced versin of Pong. LearnXNA.com has a great summary of the video.
Boyd Multerer, product unit manager, and David Weller, were interviewed by Channel 9 about XNA, talking a bit about networking, among other things.
Joe Nalewabau of the XNA Team took time to explain why Visual C# Express was chosen over, say, Visual Basic. If you are dead set on using Visual Basic, you still can. Check out Alan Phipps for how to set it up.
Other Tidbits
Rob Loach had created OpenXNA.net, a new XNA community site. It has some tutorials and a wiki already, and possibly forums in the future.
ThreeSixBox.com is also a community site. They have some awesome demos, such as the balls demo by Derek Nedelman, and Earth Invaders by Smealum.
Gamasutra has a comprehensive (31 pages) article about platform games. It does a good job analysing the genre.
Curious about .Net 3.0? Well, Microsoft eLearning is offering a six-hour clinic about .Net 3.0. It will be free until the release of “.Net FX”, after which it will cost you ten bucks. It covers the Windows Presentation, Workflow, and Communication Foundations.
Andre Vrignaud has a writeup about asynchronous games. I love the casual approat to multiplayer you achieve with this method.
Internet Explorer 7.0 for Windows XP final version released today. Yay!
Coding Ahead
I’ve been coding and planning a bit. This is the preliminary outline:
- Tutorial 11 - Sprite Sheets (new Load method)
- Tutorial 12 - Animations (new class which Sprite inherits from)
- Tutorial 12 - Background (scrolls with a ball)
- Tutorial 13 - Mouse (detect mouse state and draw mouse cursor)
- Tutorial 14 - Gun (mouse button detection, dynamic object instantiation)
- Tutorial 15 - Fullscreen (cleanup LoadGraphics, reset graphics device)
- Tutorial 16 - Farseer Physics (replaces some previous code)
- Tutorial 17 - Floor and Character (static and dynamic bodies)
- Tutorial 18 - Keyboard (detection, physics forces)
- Tutorial 19 - Enemies (rudimentary AI)
- Tutorial 20 - XML (data storage, XMLDocument)
- Tutorial 21 - Sound (XACT, banks and cues)
Let me know if this outline sounds screwy.
I won’t follow this outline, for sure. (c: But something like it. I’ve already had time to code tutorials 11 through 15, and I will play with Farseer during the weekend. That will be fun!
The reason I actually have a plan (unusual, I know), is because the computer on which I shoot the tutorials is down for the count. There will definitely not be a new tutorial this week, although the code is already there.
I’m hopefully going to pick up a new computer during the weekend. I’ve cleared some of next week’s schedule, so I promise at least one next week, possibly two.
I’ve also spent time on researching forums for this site. It’s diffucult to find a balance between features and clutter. It seems that a custom solution might be the only way to get what I want, as some of the features I want only exist in huge forum software kits, which is overkill.
On top of this, FeedReader bugged out on me, my new Microsoft wireless keyboard didn’t work, the company I bought the keyboard from proved to be anal, and my wife decided to check out iPod (no, I haven’t installed Linux yet
and buy a new mobile phone (I have to play with it too
. But that’s just that old sucker called life, interfering with XNA.
Tenth Tutorial
Tutorial number ten is here, and is roughly 40 minutes long.
First ten minutes I clean up a bit, but after that I have time to both add mass and rotation to the balls, while going over Game Loop Timing and Structures.
The link list to the right is getting messy. I’ll have to fix that up when I have time.
Pasting code
Also, I’m trying out a new method, now that the basics are over. I’m nog pasting in code, instead of typing it in. Let me know if it’s too hard to follow what is going on.
Old Polls
Also, I’ve taken down all the previous polls.
The results were:
- I’ll try to keep the pace up.
- I’ll add subtitles as soon as I figure out a good way to do this.
- I’ll try to switch focus oven on XNA game code, away from C# introductions as much as possible.
- I’ll add the source code to each zip from now on.
- I’ll make a platform game.
- I’ll set up a forum here as soon as possible, but only for discussion of the XNAtutorial content. Other questions will be redirected to the official forums.
Cheers!
Joran
Xbox360homebrew Sweetens the Deal
Now that the competition has commenced, I’ve updated my entry with all the contestants in the xbox360homebrew competition. In addition to the individualized feeds, I’ve added more text and screenshot links.
Also, Mark Coffman has gotten a donation from GarageGames, and has added three TorqueX prizes as well!
It took hours to read all posts, and write about all contestants, so I don’t have time for the weekly update. I’ll do that in a few days.
Cheers!
Joran
Tutorials 8 and 9
Here’s one-an-a-half hour video for your weekend entertainment! (c:
Tutorial 8
Tutorial 8 talks about inheritance and polymorphism.
Because of the new concept of inheritance, I also refactor yet again. (c: I know, it sucks, but it’s going to make it a lot easier to make the player, enemy, and platform sprites.
Tutorial 9
Tutorial 9 makes a bad attempt to explain collision detection.
The collision detection is very basic, but the math involved in the response to a collision is not so easy. I more or less butcher the explanation. If it’s not clear, let me know, and I’ll reshoot tutorial 9.
I also included the solution again. Before I packed it up, I added some XML comments to each member, so I won’t go over those in the next tutorial. I’ll just assume we are on the same page.
UPDATE: Two bugs!
Starbreezer noticed how the CollisionDetection method accepts a Ball as argument. The method is in the Sprite class. It should accept a Sprite, not a Ball.
Also, Dim noticed how the balls were “sticky”. I forgot half the statement when making the relative vector…
I have updated the source code in Tutorial 9, but the solution is available as a much smaller dowload as well, because I haven’t updated the video yet.
I guess I was extremely tired… I’ll probably reshoot the entire video later on. Thanks, Starbreezer and Dim!
Forum?
Oh, one more thing. There are two forums about XNA now. The official one at MSDN.com, and the new one by Stefan Virag at theXNAworld. Are you guys happy discussing these tutorials here in the comments, or how should we do this? Four options:
- Redirect all questions to the official MSDN forums. Keep it simple, stupid.
- Redirect all questions to theXNAworld. Make Stefan happy. (c:
- Post and answer questions in the comments here at XNAtutorial. Might get messy when thre are more people here.
- Open up a forum here at XNAtutorial. Yet another forum to visit regularly and keep a user profile for?
I actually already installed a forum package on this server, but I never made it public, because I figured the official MSDN forums were good enough. Then Stefan and Alan made me reconsider. I’ll leave it up to you, friends.
UPDATE: I forgot to mention that I got my weekly statistics report in the mail. Combined with the numbers from learnxna.com’s mirroring of my tutorials, they have been downloaded 13200 times! Yay! Thanks for the vote of confidence!
Cheers!
Joran Omark
Sorry, there are no polls available at the moment.
Weekly Roundup
I want to start out with a link to a site which not new, but is a good resource for game developers. Game Middleware List collects links to a bunch of software which will help you make your game. Anything from 3D modeling software to in-game video plug-ins.
Michael Morton at ziggyware.com keeps pumping out XNA tutorials, last time I checked, there were sixteen of them!
Stefan Virag has put up a new XNA forum, which he wants to be a support forum for in a way that the MSDN forums are not. These forums are more for collaboration, and for asking questions about material found away from Microsoft’s site. It’s in its infancy, so head over and help make it better!
Machaira, one of the xbox360homebrew XNA competition participants, has also published a screenshot component for XNA. You can grab it straight away.
Jean-François Buisson had converted Time Pilot ‘82 from Java to XNA, and provided the source. It’s a classic!
AP has given Slime Volleyball a new home over at the CodePlex, so this blog will probably wither away. On the upside, you can now help make Slime Volleyball better!
Mark Coffman has a roundup of all public, open source, XNA projects at the CodePlex.
There are also two projects over at SourceForge.net:
Visual3D.NET are porting their 3D game engine to XNA as well. “RealmForge - The .NET 3D game engine predecessor to Visual3D.NET (www.visual3d.net), which is a framework and toolset for the visual design and development of 3D games, simulations, and interactive environments using C#, .NET 2.0, and XNA.”
And the second one: “CGEmpire Community Game Project - The first CGEmpire community project. Members of CGEmpire.com will develop a full game using XNA technology with the free XNA Game Studio Express in C#.”
Both RealmForge and CGEmpire have blogs with announcements as well.
Cheers!
Xbox360homebrew.com Contestants
Here’s a short summary of all contestants at the start of the competition, in alphabetical order.
Alex Okafor is making Wildboarders, a side-scrolling, snow-boarding game. He is integrating many components from the community, to save time. (feed) (screenshot)
alphabirth is making something similar to Tetrisphere. (feed)
Andre Odendaal is making Mac Attack, a 2D, multiplayer, cooperative game where you run a fast food outlet. Each job at the restaurant is a mini-game. Check out Pizza Frenzy, Hammer Heads for gameplay comparison, and McDonald’s game for graphical style. (feed) (screenshot)
Andrew is probably making a 2D, strategy game, but loves Final Fantasy, so we’ll see. (feed)
Anton Afanasyev is making a 3D, multiplayer Space Invaders. (feed)
Ben James is doing Kurodust Fighter, a Double Dragon or Final Fight-style, 2D beat ‘em up game with his Kurodust music band members. (feed) (screenshot)
Catalin Zima is doing a beautiful butterfly puzzle game for his girlfriend, from a 3D third person (third butterfly?) view. He has also released a DebugComponent, to show people how neat the Service system is. (feed) (screenshot)
Darkside is doing Hack-1, a hacker game, similar to the hacking interface in System Shock 2, or even Pac-Man. (feed) (not a screenshot)
Darth Farza is making Farmaggedon, a 2D, side-view, platform game, where you battle Martian invaders in a re-make of Lode Runner. One interesting feature is the adaptive terrain, maybe something like Lemmings. (feed)
Endre is still deciding on a game type, but is leaning towards a shoot-’em up, similar to Rambo. (feed)
Fabio is making a 3D, real-time strategy game, where you run an ant colony. It has two views, surface terrain, and ant hill overview. (feed)
Garrett Hoofman is making Schism 2.0, with a Ninjas versus Pirates theme. (feed) (not a screenshot)
hexx is making Hamster Games ‘06, a 2D party- or family-game. (feed) (not a screenshot)
JLarkin is making a 2D, side-scrolling Super Mario Bros-like game, set in the federal world of CIA, FBI, and possibly the TV-serie X-Files. (feed)
Johnnylightbulb is making a 3D, first-person shooter, but without weapons or enemies, that ought to be interesting. (feed)
Max-Studio might port their Gqanaz puzzle game from the mobile phone platform, or they might do something completely different. (feed) (screenshot)
Liam is making 2D, tactical-strategy game in the vein of Advance Wars. (feed) (screenshot)
lightbrush is making a GCube, a 3D cube with a tiny casual game running on each surface. Fresh. (feed) (code) (screenshot)
Lonely Gnome Studios is making Hostile Takeover, a 2D, top-down, turn-based strategy game, a bit inspired by King’s Bounty. The setting is in an office complex, and you are the CEO, sending out your “troops”. (feed)
Luca started with a Space Invaders clone, but will be restarting soon. (feed) (screenshot)
Luis Estrada is working on a 2D game similar to Ninja Gaiden. (feed)
Luke Trainor is making Faith & Misery, a 3D, side-scrolling, shoot-’em up, possibly with some RPG storyline and character development. He’s also working hard on the tool side of making the game. (feed) (screenshot)
Machaira is remaking the board game Robo Rally into a multiplayer computer version, but has had a HD crash, so we’re hoping things turn out for the best. (feed)
Mariusz is making Small Ninja, a platform, maze game. (feed) (character)
Matthew Randall is making Music Mogul, a 2D, puzzle, action, plat-former game, with five mini-games. (feed)
Meade will start out with a 2D shoot-’em up, where your bee collects pollen. He’s also starting out with the tool side. (feed) (tool screenshot)
Michael Morton, of ziggyware.com, has been waiting for the start signal. In the meantime, he’s cranking out many great XNA tutorials. (feed)
mycatfield is remaking the classic Games Workshop board game Space Hulk. (feed) (screenshot)
Nirosys is making Lament, which is based on a basic newbie-programming game, but he will be adding some innovative gameplay ideas. (feed) (screenshot movie)
NNG is making an advanced casual game, possibly with some new game play ideas, because he has applied for a patent. (feed)
Nuno Ramiro is making War Age, a remake of an old 2D game. (feed) (screenshot)
Patrick J Bennet is remaking the classic Robotron 2084, as Bozotron, and he’s actually teaching programming in his blog at the same time. (feed) (screenshot)
Paul E Coyote is still planning, but will try to be educational in his blog. (feed)
Riku-Juhani Niemelä is making Tsumba, another Games Workshop board game conversion. (feed)
Robert is deploying nuclear weapons in his Nuclear Dawn, a 3D, multiplayer, real-time strategy game. (feed) (screenshot)
sonix is making a platform runner, Jazz JackRabbit and Sonic the Hedgehog, and starting with the level editor. (feed)
supaG is making Melee & Magic, a free-fighting, platform action game, set in a fantasy world. Gameplay is inspired by Super Smash Bros. Melee. (Feed)
soulos is making Panintball Tactics, a turn based, squad based, human-versus-computer strategy game. (feed)
Tanit is making City of Darkness, a 3D first-person shooter, with a zombie theme. His goal is to make a publicly availabe 3D engine at the same time, with a custom-built API. (feed)
wehso is making a 2D, shoot-’em up, flier game. (feed) (screenshot)
Yau is making a 3D game, and will be releasing more info during the weekend. (feed)
I haven’t clicked on the above links, so I hope I didn’t screw any of them up. Let me know if I did, or if I missed anyone.
Cheers!
Joran
The Future of my XNAtutorials
I’ve decided on a side-scrolling adventure, similar to Mario Bro’s. Both the poll and the comments tell me that’s the way to go. I’ll take down all the polls now, and try to implement as much of the feedback they have given as possible.
So, what about the Ball class code we have written so far? It will be split up into two sections.
Half of it will be turned into a generic (basic) Sprite class, used drawing anything to the screen.
The second half of the Ball class will become the bullets of the heroine’s weapon.
A few shortened and paraphrased comments
Mudry: “I would like to see an old school platform game like ‘Monty on the Run’.”
Cameron: “I’m getting sick of seeing Pong tutorials everywhere. It’s time for something fresh, like a side-scrolling action/adventure.”
Claton: “I would like to see a side-scrolling action/adventure.”
Vector2
Stefan: “You should use Vector2.”
Yes, we will start using that pretty soon. We will also use BoundingBoxes, and possibly BoundingSpheres, because we are about to start digging into collision detection.
Praise
Stefan: “You’ve really done a great job.”
Mudry: “Thanks for the great tutorials.”
Starbreezer: “Thanks for this awesome Tutorial. Its more than helpful to get described why a method is used, instead of copying it from some prewritten source code, wondering how the stuff actually works.”
Cameron: “I’d like to give you the recognition you deserve. I’ve been coding for eight years, but have had trouble finding quality tutorials for beginners, explaining more than syntax. Thanks heaps for all the effort you’re putting in. I hope it continues, because it could very well be what helps me pursue a career in game design.”
Claton: “I’ve seen many XNA tutorials, but this one is the best as it teaches right from the start and explains some basics of C# too. Many thanks to you, as now I will be able to fulfill my dream of creating a Game.”
Law Wai Hon: “I am Chinese, with poor English listening skills, yet I can understand these tutorials/. They are simple and clear.”
Starbreezer: “Sorry for my terrible English, but I’m from Germany. ^^”
Thank you all for your encouragement! Without you people commenting, I would probably have quit around tutorial four or five, but now I do see that I am helping people, so I hope to be able to keep doing this for quite some time.
And about language, well, aren’t we all struggling with English? (c: I hope my Swedish accent hasn’t deterred too many viewers…
Again, thank you!
Cheers!
Joran
Seventh Tutorial
I had to shoot this one between teaching classes. It is half-an-hour long, and I shot it in half-an-hour. My wife called me Spielberg, who is famous for shooting fast. (c: I’m even a bit impressed myself… Hope I don’t stutter and jump to conclusions too much, though.
XNA Tutorial Seven doesn’t progress anything on the game. Instead, I spend some time wrapping up a few loose ends, and answering a few questions I have received. I go over static and instance members, pass by value and pass by reference, and advanced commenting.
What kind of game do you want this to turn out as? Send me some feedback in the comments below, please! You can email me too, email to anything at XNAtutorial.com, and I’ll get it.
UPDATE: People have started to come with suggestions, so I figured I should put them in a poll. If someone comes up with another good idea, I’ll add that alternative.
Sorry, there are no polls available at the moment.
Early Weekly Roundup
I’m doing the weekly roundup a bit early, because I’ve promised the wife quality time. No XNA for me all weekend! (c:
Not many new things. The main piece of news is probably an XNA Wiki, by Seiggy. It is in its infancy, which is why you should head over and help out!
PsyCadelik has updated his Mario Bro’s clone, so now it is not only playable, but legal. He is kind enough to hand out source code in the download as well.
The CodePlex has yet another project. At this speed, they’ll beat SourceForge.net in no time! The XGameInput project gives you control over mouse, keyboard, and gamepad input from one handy interface. Andy Fraser is a good man.


