25 Mar, 2010, Deimos wrote in the 1st comment:
Votes: 0
So, my game world was previously very small in comparison to most other games. It had a few areas and some connecting wilderness with an overhead map for the expanses between the areas. I've decided to go with an overhead map + room description combo by default (both optional via settings, but enabled by default), and I've also decided to drastically expand the world.

So, I'm looking for shortcuts in the creation phase, as I'm aiming for a world in the 6-7 figure number of rooms. I've been using Ruby for this new project, and having some GD library experience with PHP, I was geeked to learn that there was an awesome rubygem API for it. I've implemented it with great success, and I can now draw big maps with my kick-ass GIMP paintbrush skills and read this map in pixel by pixel to construct the vast majority of the game world.

There's only one problem.

This method of world creation makes it only feasible to read in color data of pixels. While this is still pretty cool, it leaves me with a bunch of stumbling blocks. Namely, I'm sort of restricted by the 16 color palette. Given that I have dozens of terrain types, some of which have the same colors on the player's ASCII map, I need a way of storing this extra terrain data. Currently, the best solution I can come up with is to simply use a bigger palette on the map, and convert those colors into color/terrain combinations when I load it. This makes the creation phase rather cumbersome, though, since now I have to remember if RGB(128,180,65) is :dense_jungle, :savannah, etc. When these colors don't match the colors on the player's ASCII map, it makes them extremely hard to remember, and even if I have a key open to reference, deciphering complex areas is still painful.

So, now that I've written a novella, my actual question: do you guys have any suggestions on a better way of going about this process?
25 Mar, 2010, Davion wrote in the 2nd comment:
Votes: 0
You're using the same storage method I was using. Worked well. I even used secondary maps to overlay additional stuff (mobs, objects, elevation, etc).

The RGB() values give a great way to show whole wide array for different terrain types. If you're going to stick with this method, I'd suggest grouping the sector types first, eg. (all the tree-like, all the water-like, etc) and deriving from similar RGB values, so ocean might be 128,180,65, and river might be 128,180,66. This helps keeps things somewhat organized, and eventually you'll just be able to sight read the RGB values (takes longer if the RGB values are all over the place… trust me :P Don't base it on pretty lookin colours for your map! Save that for something you'll show the players.
25 Mar, 2010, Deimos wrote in the 3rd comment:
Votes: 0
Davion said:
The RGB() values give a great way to show whole wide array for different terrain types. If you're going to stick with this method, I'd suggest grouping the sector types first, eg. (all the tree-like, all the water-like, etc) and deriving from similar RGB values, so ocean might be 128,180,65, and river might be 128,180,66. This helps keeps things somewhat organized, and eventually you'll just be able to sight read the RGB values (takes longer if the RGB values are all over the place… trust me :P Don't base it on pretty lookin colours for your map! Save that for something you'll show the players.

Hmm, that sounds like a much better solution than using off the wall colors.
25 Mar, 2010, David Haley wrote in the 4th comment:
Votes: 0
If you save in a format with an alpha channel, you can also use that to indicate various things.
25 Mar, 2010, Scandum wrote in the 5th comment:
Votes: 0
You could use xterm 256 color codes.

http://www.mudpedia.org/wiki/ANSI_color

\e

\e[38;5;110m \e[38;5;160m etc. You'll probably want a toggle for clients that don't support it, there's a list here:

[url]http://www.mudpedia.org/wiki/Comparison_...]
25 Mar, 2010, David Haley wrote in the 6th comment:
Votes: 0
I think the issue was stated as being in the creation phase, not how to display stuff to clients using ANSI/xterm color codes.
0.0/6