Crossfire Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
CF: Invitation to contribute to random map generator
Hello,
I'm working on a random map generator for crossfire right now,
and I'm at the stage where I'm working on forming reasonable basic
wall layouts.
I've written a maze generator already:
####################
#...#.#.#.#.#.#..#.#
#.......#...#....#.#
#...###.##..####.#.#
#####.#..##......#.#
#.....#...#..###...#
#...###.###.##.##..#
##..#...#...#...##.#
#..##.#.#.#.###..#.#
##.#..#.###...#.##.#
#..#.##.....#...#..#
#..#.#.....##..##.##
#.##.#.....#...#...#
#....#.....#...#.###
####.##....#...#...#
#..#..##.###...#.###
##.##..#.#...###.#.#
#.....##.##..#...#.#
#..#..#...#..#.#...#
####################
And I'm working on a layout generator which makes things like:
/* generates onion (layered) maps */
char **map_gen_onion(int xsize, int ysize, int option, int layers);
like this:
regular random
centered, linear onion bottom/right centered, nonlinear
######################### #########################
# # # #
# ######## ########## # # #####################
# # # # # # #
# # ###### ######## # # # # #
# # # # # # # # ######## ########
# # # #### ###### # # # # # # #
# # # # # # # # # # # #
# # # ############ # # # # # # ########### ##
# # # # # # # # # # #
# # ################ # # # # # # #########
# # # # # # # # #
# #################### # # # # # #
# # # # # # # #
######################### #########################
options:
0 Pick a random options below
1 linear doors (default is nonlinear)
2 bottom "centered" -- produces bottom centered onion
4 right "centered", can be combined with bottom centering
8 outer wall off: i.e., no outer wall.
16 irregularly/randomly spaced layers (default: regular)
Someone else is working on maps which look like:
######################
# # # #
# # # #
# #
# # # #
######### ##########
# # # #
# #
# # # #
# # # #
######### ##########
# # # #
# #
# # # #
######################
I invite everyone to contribute their own random layout generation function,
if they're not along these lines.
Specs:
allocates and returns a char ** array given xsize and ysize and whatever
options you feel are appropriate, like so:
char **layout_generator(int xsie, int ysize, int option1, int option2);
Passing 0 in for option1 or option2 should make it pick at random from
the options available.
The returned array should have a '#' for a wall block, and a char value
of 0 for an empty cell.
Restrictions: every point should be accessible from every other point.
You may also use the char value of '*' to indicate a door, if you like.
Please keep me informed about your plans so that I may coordinate.
PeterM
-
[you can put yourself on the announcement list only or unsubscribe altogether
by sending an email stating your wishes to crossfire-request@ifi.uio.no]