Home | Rules and Guide | Sign In/Create Account | Write a Post | Reddit | #LD48 | #ludumdare on irc.afternet.org (Info)

Ludum Dare 31 — Coming December 5th-8th 2014! — Join the Mailing List!
Also check out the Ludum Dare 30 results!
  • Ludum Dare 31 begins: in 76 days, 19 hours, 3 minutes, 59 seconds
  • (Time might be off, we’ll have it right soon) | Real World Gatherings (Now Open!)


    2D Tile Engine!

    Posted by
    April 30th, 2011 7:37 am

    Yay!

    Just a few demos using only 10×10 tiles:

    How it happens:
    A 10×10 tile is created using a boolean array:

    for(int i=0;i<10;i++){
    	for(int j=0;j<10;j++){
     		tiles[i,j] = (Random.Range(0.0f,1.0f)>=0.5f);
    	}
    }

    Then each tile checks its surrounding tiles and records the environment status into a flag:

    byte getFlagsForTile(int i, int j){
    	byte result = 0;
    	int curPos = 0;
    	for(int k=-1;k<=1;k++){
    		for(int l=-1;l<=1;l++){
    			if(!(k==0&&l==0)){
    				if(hasTile(i+k,j+l))
    					result|=(byte)(1<<curPos);
    				curPos++;
    			}
    		}
    	}
    	return result;
    }

    Based on this flag system:

    So if the flag’s first bit is 1, that means there’s a tile on the lower right of this tile.

    Using the flag as a guide, the tile can then pick its graphics from this sprite sheet:

     

    That’s it … also I will use the flag information to generate collision.

    One Response to “2D Tile Engine!”

    1. snowyowl says:

      Wow. That is an awesome sprite sheet.

    Leave a Reply

    You must be logged in to post a comment.


    All posts, images, and comments are owned by their creators.

    [cache: storing page]