View Single Post
Old January 5, 2011, 06:35   #21
d_m
Angband Devteam member
 
d_m's Avatar
 
Join Date: Aug 2008
Location: Philadelphia, PA, USA
Age: 39
Posts: 1,516
d_m is on a distinguished road
Quote:
Originally Posted by Shockbolt View Post
This should generate less work than my initial approach to the tileset...hopefully.

I'm also thinking of creating different player tiles for when the player is standing in the doorway (some of the player being blocked by the wall/doorway), it shouldn't be too hard to add this feature to the game
The way the current code works is that every square of Angband gets translated into a static graphic tile. Currently there are some cases where one ascii character (for instance @) gets mapped onto different tiles depending on game settings (character's gender and race, for instance). But changing which tiles get used for tiles that are currently all the same (for instance walls, and the permanent walls that get used in town) is definitely some work.

That said I think the work is worth doing.

One thing to consider when working on walls is how you would draw this dungeon using the 16 kinds of wall tiles I suggeseted:

Code:
+------------------+
|     # # ### #####|
|# #  ### # # #####|
|   #   # ### ## ##|
|## # # #     #####|
|     # # ### #####|
|# # # ## ###      |
| # # # # ###      |
+------------------+
(the +, | and - are used only to show the edges -- they should be empty tiles)

We should be able to generate this image just by pasting in your empty floor graphic tile and the 16 different wall tiles--this is how the game actually uses tiles. I suspect that having walls of varying thickness (for now) isn't going to work, but that it should be possible to give walls a somewhat 3D look like you did by figuring out whether they are "attached on" a side or not.

EDIT: I started working on a super simple 16x16 version of this in mtpaint and I'm worried that you need the diagonal connections to get this right.

EDIT2: Yeah, it's hard to get the 3D look you want without knowing about diagonal adjacency. Otherwise, it's hard to get these two cases done correctly for X:

Code:
+--+ +--+
|X#| |X#|
|# | |##|
+--+ +--+
In the first case, you want X to have a little bit from the lower right missing, since presumably you're going to have some angling/3D effect on the two adjacent walls. In the second case, you definitely don't want a bit missing from the lower right, because it needs to flow into the diagonally adjacent square.

However, I think you only care about diagonally adjacent walls when both of the compass directions are filled, meaning you don't need 256 wall tiles, but only 47 wall tiles (the base 16, plus an additional +1x4 tiles for the elbow cases (2/4 not in a line), an additional +3x4 for the cases for the tiles blocked on 3/4 sides, and +1x15 cases for the wall that is blocked on 4/4 sides). It's late and I might be tired, but I'm pretty sure this is mostly right.

I will try to finish up my simple graphics example and post it here.
__________________
linux->xterm->screen->pmacs

Last edited by d_m; January 5, 2011 at 07:14.
d_m is offline   Reply With Quote