Last post I said I’d do some tutorials this weekend, only, on what? Sure, there are tons of good XNA tutorials out there. However, I noticed a substantial lack of platforming game tutorials, almost as if no one cared. Well, since a lot of XBLCG are platformers, I figured it’d be appropriate to produce a tutorial series about just that – creating a platform game from scratch. Yes, I am aware that XNA 3.0 comes with a platform game, but it over-simplifies things. First, there’s way too many classes. Second, there’s no scrolling. What? No scrolling in a platformer? I thought this was strange.

This marks the first in a series of new tutorials covering the creation of a platform game in BOTH VB .NET and XNA, simultaneously. (Yeah, I’m going to show that it can be done in both languages. ) The code is remarkably similar. Since this is the first tutorial, I feel I should explain how this’ll work. For each tutorial, I will:

  • provide a brief summary of what will be accomplished in the tutorial
  • release two videos with commentary, one for XNA and one for VB .NET, ala Nick’s tile engine series
  • post resources used in the current tutorial (images, etc)
  • change the banner of the website to reflect the current tutorial
  • write-up a comparison of the two versions
  • link to downloads of both the XNA and VB projects, respectfully

TUTORIAL #1 – Basic Movement and Set-Up

Summary: Follows setting up a new project, adding resources, displaying images, dealing with a sprite sheet, showing one method of smooth movement in two directions, and handling key input.

Images used:

Lucas Sprite Sheet* Credit to Naruto[NU] for these Lucas sprites! Original version found here.


Download (includes finished project, video, resources):

XNA (~35 minutes)

VB .NET (~50 minutes)

Comparison: Gameplay-wise, they are exactly the same. There are slightly noticeable framerate issues on the VB .NET project, but this is as expected.


~ by IG on April 10, 2009.

11 Responses to “Platforming”

  1. I found that the Platformer Starter Kit was a bit oversimplified too. I would have liked to have ladders and moving platforms. However, by keeping it simple, they might interest some people with less experience to actually enjoy programming.

    If someone want to make a real game out of it, they’d have to do a whole lot of refactoring but it’s still workable. It’s still better than having nothing. I actually learned something, while reading the code, that I used in some school projects.

    Doing it from scratch is a good exercise though. It can help people understand what they’re doing. I would strongly suggests not putting everything in one class though. This keep everything coupled together and changing just a small thing have impact on everything.

    Good work though, at least, you’re not too lazy (like me) and just go post comments on someone else blog instead of doing stuff yourself. 😉

    BTW, the animation with the skidding is really nice. It makes a cool header. Oh and congrats for making a well encoded video. That’s a nice change too… You should do a tutorial about that because I know some people who’d really need to learn things like that. Have a nice week!

    I’m not trying to be harsh or not fun. I’m just giving comments to enrich the process of writing your stuff. You have the right to have your own ideas. All I want is too show another point of view. Cheers.

    • You have a point about the classes. I think I’ll do a tutorial in-between jumping and collision to migrate the main character’s variables and methods to a separate class. Oh and don’t think you’re a nuisance. I always take your comments into consideration, even if I don’t reply to them.

  2. I’m glad you liked my advices. I think good programming is really important in game development because we usually spend more time changing code than writing it. Having a good base structure using good programming to help our application scale and maintain more easily is essential. I have some plan to write some article on design patterns in games. I’m not a master though and I wouldn’t like people pointing to my flaws. It’s a pointy subject. I do it the best that I can but.. can I teach it? Not too sure.

    Good luck with your project. I rechecked the platformer starter kit for another time and I was horrified. It don’t look like it can be scaled easily at ALL! Even extending from it is impossible. The jumping and player control are all in the player class which is an horrible idea. There’s no abstraction for the player movement what so ever…

    I guess I’ll have to start my own project using your code… Best of luck.

  3. Sorry to bother you but the video quality on my computer is very low for some reason, the text is unreadable and very distorted, would you know how i could resolve this issue?

    • It is because of your resolution. You can change the resolution of your pc by Right Clicking on Desktop -> Properties -> Settings Tab and moving the slider to a higher resolution, then try simply viewing the video in fullscreen mode.

  4. This was a really nice tutorial. Thanks for making it! I’m going to watch the 2nd video now….

  5. can you re-upload this video? the link seems to be dead. Thanks

    • Sorry, I forgot to update the links for these pages. Please click on “Platform Tutorial Series on the right sidebar in the Pages box. Those links are updated. Thanks for your interest!

  6. Just finished the first tutorial. I wanted to pop in and say “Thank you!” I’ve been struggling with understanding sprite sheets, and this took care of that understanding.

  7. hello, i really like the sprites used on this page i just wanted to ask if i could use on my game

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: