Jump to content
  • Advertisement
  • 10/23/07 03:49 AM
    Sign in to follow this  

    Simple Tilemap Scrolling

    General and Gameplay Programming

    Myopic Rhino
    Hi there, and welcome to my little article on simple tile scrolling. A lot of articles on scrolling here at GDNet are somewhat difficult, but here is a more direct method. Now first off, you need a tile-rendering system. Now, declare 2 variables: offsetx and offsety:

    float offsetx = 0; float offsety = 0; I am using the Tiling in OpenGL tutorial here at GDNet by Martin Estevao. Now, just add offsetx to every x of each tile's vertices, and add offsety to every y of every tile's vertices. void draw_tiles(GLvoid) { int tile; for (int y = 0; y < MAP_SIZEY; y++) { for (int x = 0; x < MAP_SIZEX; x++) { tile = map[y][x]; glBindTexture(GL_TEXTURE_2D, texture[tile]); glBegin(GL_QUADS); glTexCoord2f(0.0f, 0.0f); glVertex3f(float(x+offsetx), float(y + offsety), 0.0f); glTexCoord2f(1.0f, 0.0f); glVertex3f(float(x + 1 + offsetx), float(y + offsety), 0.0f); glTexCoord2f(1.0f, 1.0f); glVertex3f(float(x + 1 + offsetx), float(y + 1 + offsety), 0.0f); glTexCoord2f(0.0f, 1.0f); glVertex3f(float(x + offsetx), float(y + 1 + offsety), 0.0f); glEnd(); } } } There, easier to understand in code than words. Next, go to wherever your input is and check to see if the Right key is held down. If it is, subtract 0.04 from offsetx. Check the Up key and if it is held down, subtract 0.04 from offsety. If the Down key is held down, add 0.04 to offsety. If the Left key is held down, add 0.04 to offsetx. I used 0.04 because it worked well with my computer speed and FPS I was getting. if((GetKeyState(VK_LEFT) & 0x80)) { offsetx += 0.04f; } if((GetKeyState(VK_RIGHT) & 0x80)) { offsetx -= 0.04f; } if((GetKeyState(VK_UP) & 0x80)) { offsety -= 0.04f; } if((GetKeyState(VK_DOWN) & 0x80)) { offsety += 0.04f; } And that's it! I hope you liked my super-simple scrolling, it is easily portable to directx from opengl and is easy to understand and implement. Another advantage is that now you don't need a playerx and playery variable, since the player is always at 0,0! This is where I leave you to go out and do some tile-based programming on your own. Good luck with whatever tile-based stuff you do, if you have comments or hating, send me an email at brandonmanrules@gmail.com, contact me on the forums as brandonman or post a comment in the feedback thread. Also, I'd be proud to know if this was used in any games you make, so tell me if it is! Thanks for taking the time to read this. Don't forget to download the source code as well!

      Report Article
    Sign in to follow this  

    User Feedback

    There are no comments to display.

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!