• Advertisement

thescholar

Member
  • Content count

    8
  • Joined

  • Last visited

Community Reputation

115 Neutral

About thescholar

  • Rank
    Newbie
  1. Yes, I would like to create an auto-tile system by filling it with patterns. for example, the larger the field gets, larger tile patterns are inserted (rather than always repeating 1x1 pattern. So rather than using constantly 32x32 tiles for the middle part of the autotile, I would like to use other patterns like 2x2, 3x3, etc. But I know how complex it is, so I try to ask my questions at the most basic level as possible. [quote]And since your keys are 0-255 with no gaps, why do you need a hash table? A 1-d array would serve you just as well...[/quote] It's because the keys are the bit signature for all tile possibilities, so the same tile id can be used for many type of connections depending of the adjacent tiles around the middle tile.
  2. Thanks guys, very helpful!
  3. Recently I've programmed an auto-tile system for my game engine, which use 47 possible tile combinations. The technique is to check each of the eight adjacent cells ariound the center tile which are represented as a power of two, like so: 128, 001, 002 064, 000, 004 032, 016, 008 This method work great so far for me, the autotile system is assembled with the proper edge tiles automatically in real-time. The real issue was to write the hash table of keys and values, which was EXTREMELY time-consuming. It took me nearly 6 hours to enter the values and make sure they're exact. See my hash table below. My question: is there a way to auto-generate the keys/values of that hash table with an algorithm so that next time I don't have to enter it manually? I feel it's very important to ask because I will probably have to do it again for something else similar. [source lang="csharp"]public void create_hash() { hash_table.Add( 0 , 47 ); hash_table.Add( 1 , 35 ); hash_table.Add( 2 , 47 ); hash_table.Add( 3 , 35 ); hash_table.Add( 4 , 7 ); hash_table.Add( 5 , 36 ); hash_table.Add( 6 , 7 ); hash_table.Add( 7 , 32 ); hash_table.Add( 8 , 47 ); hash_table.Add( 9 , 35 ); hash_table.Add( 10 , 47 ); hash_table.Add( 11 , 35 ); hash_table.Add( 12 , 7 ); hash_table.Add( 13 , 36 ); hash_table.Add( 14 , 7 ); hash_table.Add( 15 , 32 ); hash_table.Add( 16 , 3 ); hash_table.Add( 17 , 19 ); hash_table.Add( 18 , 3 ); hash_table.Add( 19 , 19 ); hash_table.Add( 20 , 4 ); hash_table.Add( 21 , 20 ); hash_table.Add( 22 , 4 ); hash_table.Add( 23 , 14 ); hash_table.Add( 24 , 3 ); hash_table.Add( 25 , 19 ); hash_table.Add( 26 , 3 ); hash_table.Add( 27 , 19 ); hash_table.Add( 28 , 0 ); hash_table.Add( 29 , 12 ); hash_table.Add( 30 , 0 ); hash_table.Add( 31 , 16 ); hash_table.Add( 32 , 47 ); hash_table.Add( 33 , 35 ); hash_table.Add( 34 , 47 ); hash_table.Add( 35 , 35 ); hash_table.Add( 36 , 7 ); hash_table.Add( 37 , 36 ); hash_table.Add( 38 , 7 ); hash_table.Add( 39 , 32 ); hash_table.Add( 40 , 47 ); hash_table.Add( 41 , 35 ); hash_table.Add( 42 , 47 ); hash_table.Add( 43 , 35 ); hash_table.Add( 44 , 7 ); hash_table.Add( 45 , 36 ); hash_table.Add( 46 , 7 ); hash_table.Add( 47 , 32 ); hash_table.Add( 48 , 3 ); hash_table.Add( 49 , 19 ); hash_table.Add( 50 , 3 ); hash_table.Add( 51 , 19 ); hash_table.Add( 52 , 4 ); hash_table.Add( 53 , 20 ); hash_table.Add( 54 , 4 ); hash_table.Add( 55 , 14 ); hash_table.Add( 56 , 3 ); hash_table.Add( 57 , 19 ); hash_table.Add( 58 , 3 ); hash_table.Add( 59 , 19 ); hash_table.Add( 60 , 0 ); hash_table.Add( 61 , 12 ); hash_table.Add( 62 , 0 ); hash_table.Add( 63 , 16 ); hash_table.Add( 64 , 9 ); hash_table.Add( 65 , 38 ); hash_table.Add( 66 , 9 ); hash_table.Add( 67 , 38 ); hash_table.Add( 68 , 8 ); hash_table.Add( 69 , 37 ); hash_table.Add( 70 , 8 ); hash_table.Add( 71 , 45 ); hash_table.Add( 72 , 9 ); hash_table.Add( 73 , 38 ); hash_table.Add( 74 , 9 ); hash_table.Add( 75 , 38 ); hash_table.Add( 76 , 8 ); hash_table.Add( 77 , 37 ); hash_table.Add( 78 , 8 ); hash_table.Add( 79 , 45 ); hash_table.Add( 80 , 6 ); hash_table.Add( 81 , 22 ); hash_table.Add( 82 , 6 ); hash_table.Add( 83 , 22 ); hash_table.Add( 84 , 5 ); hash_table.Add( 85 , 21 ); hash_table.Add( 86 , 6 ); hash_table.Add( 87 , 42 ); hash_table.Add( 88 , 6 ); hash_table.Add( 89 , 22 ); hash_table.Add( 90 , 6 ); hash_table.Add( 91 , 22 ); hash_table.Add( 92 , 29 ); hash_table.Add( 93 , 26 ); hash_table.Add( 94 , 29 ); hash_table.Add( 95 , 11 ); hash_table.Add( 96 , 9 ); hash_table.Add( 97 , 38 ); hash_table.Add( 98 , 9 ); hash_table.Add( 99 , 38 ); hash_table.Add( 100 , 8 ); hash_table.Add( 101 , 37 ); hash_table.Add( 102 , 8 ); hash_table.Add( 103 , 45 ); hash_table.Add( 104 , 9 ); hash_table.Add( 105 , 38 ); hash_table.Add( 106 , 9 ); hash_table.Add( 107 , 38 ); hash_table.Add( 108 , 8 ); hash_table.Add( 109 , 37 ); hash_table.Add( 110 , 8 ); hash_table.Add( 111 , 45 ); hash_table.Add( 112 , 2 ); hash_table.Add( 113 , 13 ); hash_table.Add( 114 , 2 ); hash_table.Add( 115 , 13 ); hash_table.Add( 116 , 30 ); hash_table.Add( 117 , 27 ); hash_table.Add( 118 , 30 ); hash_table.Add( 119 , 39 ); hash_table.Add( 120 , 2 ); hash_table.Add( 121 , 13 ); hash_table.Add( 122 , 2 ); hash_table.Add( 123 , 13 ); hash_table.Add( 124 , 1 ); hash_table.Add( 125 , 44 ); hash_table.Add( 126 , 1 ); hash_table.Add( 127 , 41 ); hash_table.Add( 128 , 47 ); hash_table.Add( 129 , 35 ); hash_table.Add( 130 , 47 ); hash_table.Add( 131 , 35 ); hash_table.Add( 132 , 7 ); hash_table.Add( 133 , 36 ); hash_table.Add( 134 , 7 ); hash_table.Add( 135 , 32 ); hash_table.Add( 136 , 47 ); hash_table.Add( 137 , 35 ); hash_table.Add( 138 , 47 ); hash_table.Add( 139 , 35 ); hash_table.Add( 140 , 7 ); hash_table.Add( 141 , 36 ); hash_table.Add( 142 , 7 ); hash_table.Add( 143 , 32 ); hash_table.Add( 144 , 3 ); hash_table.Add( 145 , 19 ); hash_table.Add( 146 , 3 ); hash_table.Add( 147 , 19 ); hash_table.Add( 148 , 4 ); hash_table.Add( 149 , 20 ); hash_table.Add( 150 , 4 ); hash_table.Add( 151 , 14 ); hash_table.Add( 152 , 3 ); hash_table.Add( 153 , 19 ); hash_table.Add( 154 , 3 ); hash_table.Add( 155 , 19 ); hash_table.Add( 156 , 0 ); hash_table.Add( 157 , 12 ); hash_table.Add( 158 , 0 ); hash_table.Add( 159 , 16 ); hash_table.Add( 160 , 47 ); hash_table.Add( 161 , 35 ); hash_table.Add( 162 , 47 ); hash_table.Add( 163 , 35 ); hash_table.Add( 164 , 7 ); hash_table.Add( 165 , 36 ); hash_table.Add( 166 , 7 ); hash_table.Add( 167 , 32 ); hash_table.Add( 168 , 47 ); hash_table.Add( 169 , 35 ); hash_table.Add( 170 , 47 ); hash_table.Add( 171 , 35 ); hash_table.Add( 172 , 7 ); hash_table.Add( 173 , 36 ); hash_table.Add( 174 , 7 ); hash_table.Add( 175 , 32 ); hash_table.Add( 176 , 3 ); hash_table.Add( 177 , 19 ); hash_table.Add( 178 , 3 ); hash_table.Add( 179 , 19 ); hash_table.Add( 180 , 4 ); hash_table.Add( 181 , 20 ); hash_table.Add( 182 , 4 ); hash_table.Add( 183 , 14 ); hash_table.Add( 184 , 3 ); hash_table.Add( 185 , 19 ); hash_table.Add( 186 , 3 ); hash_table.Add( 187 , 19 ); hash_table.Add( 188 , 0 ); hash_table.Add( 189 , 12 ); hash_table.Add( 190 , 0 ); hash_table.Add( 191 , 16 ); hash_table.Add( 192 , 9 ); hash_table.Add( 193 , 34 ); hash_table.Add( 194 , 9 ); hash_table.Add( 195 , 34 ); hash_table.Add( 196 , 8 ); hash_table.Add( 197 , 46 ); hash_table.Add( 198 , 8 ); hash_table.Add( 199 , 33 ); hash_table.Add( 200 , 9 ); hash_table.Add( 201 , 34 ); hash_table.Add( 202 , 9 ); hash_table.Add( 203 , 34 ); hash_table.Add( 204 , 8 ); hash_table.Add( 205 , 46 ); hash_table.Add( 206 , 8 ); hash_table.Add( 207 , 33 ); hash_table.Add( 208 , 6 ); hash_table.Add( 209 , 15 ); hash_table.Add( 210 , 6 ); hash_table.Add( 211 , 15 ); hash_table.Add( 212 , 5 ); hash_table.Add( 213 , 43 ); hash_table.Add( 214 , 5 ); hash_table.Add( 215 , 28 ); hash_table.Add( 216 , 6 ); hash_table.Add( 217 , 15 ); hash_table.Add( 218 , 6 ); hash_table.Add( 219 , 15 ); hash_table.Add( 220 , 29 ); hash_table.Add( 221 , 23 ); hash_table.Add( 222 , 29 ); hash_table.Add( 223 , 25 ); hash_table.Add( 224 , 9 ); hash_table.Add( 225 , 34 ); hash_table.Add( 226 , 9 ); hash_table.Add( 227 , 34 ); hash_table.Add( 228 , 8 ); hash_table.Add( 229 , 46 ); hash_table.Add( 230 , 8 ); hash_table.Add( 231 , 33 ); hash_table.Add( 232 , 9 ); hash_table.Add( 233 , 34 ); hash_table.Add( 234 , 9 ); hash_table.Add( 235 , 34 ); hash_table.Add( 236 , 8 ); hash_table.Add( 237 , 46 ); hash_table.Add( 238 , 8 ); hash_table.Add( 239 , 33 ); hash_table.Add( 240 , 2 ); hash_table.Add( 241 , 18 ); hash_table.Add( 242 , 2 ); hash_table.Add( 243 , 18 ); hash_table.Add( 244 , 30 ); hash_table.Add( 245 , 10 ); hash_table.Add( 246 , 30 ); hash_table.Add( 247 , 24 ); hash_table.Add( 248 , 2 ); hash_table.Add( 249 , 18 ); hash_table.Add( 250 , 2 ); hash_table.Add( 251 , 18 ); hash_table.Add( 252 , 1 ); hash_table.Add( 253 , 40 ); hash_table.Add( 254 , 1 ); hash_table.Add( 255 , 17 ); }[/source]
  4. I'm trying to figure out how it's possible to match a 2D pattern inside a 2D array as shown below; 2D array 1, 0, 0, 1, 0, 1 1, 0, 1, 1, 1, 1 0, 1, 0, 0, 1, 0 1, 0, 1, 1, 0, 1 0, 0, 0, 0, 1, 0 1, 1, 1, 1, 0, 1 2D pattern to be matched 1, 0, 1 0, 1, 0 1, 0, 1 Let's mention that the 2D array can be larger in other contexts. I'm also using 0 and 1 as values, but it could be any other IDs. I just tried to keep my example simple. Anyone know what would be the most efficient and fastest way to match all patterns in the 2d array in a C++ or C# program (or whatever)? It's for a game I'm trying to make. When clicking with the mouse the player set tiles on the grid, so in real-time I need to check if the pattern condition is met each time the player click to change a tile. URLs or tutorials with similar topics would be greatly appreciated. Thank you for your insights!
  5. Which branch of mathematics teach about pathfinding?

    alvaro, I think it's exactly what I was looking for. Thanks a lot. Thanks to you too Alpha_ProgDes.
  6. So as the topic title already ask, which branch of mathematics teach pathfinding? I would like to learn more about similar process or topics. I remember having seen a mathematics book with some kind of pathfinding drawings (with nodes), I never could find it again. Thanks for the insights!
  7. Well, I have a bunch of scripts written in Ruby, and somehow I need C or C++ interpret this code to run it. I've never done this kind of task before, so I feel kinda lost. Anyone can guide me and recommend the proper tutorials, books or websites so I can make a good start? Thank you and have a great week-end!
  8. NeHe Demo Collection?

    Mm, I'm just wondering, there was once a section on NeHe's website with a collection of demos submitted by users, but it doesn't seems to be there any longer. Can we find this section again somewhere? There was lots of interesting demos there to study.
  • Advertisement