Forging ahead
I know what you mean, I've just finished tweaking 8 games for a competition on atari I'm planning this summer. So now I can focus a little more on zang and phantasy star 1 VR. Let me know your progress so I'm not repeating your work.
Z+Angband dev
Collapse
X
-
Progress is slow because I'm doing too many things. Also I don't want to code too much in my spare time. I prefer to post when I have a working result.
I'm working on a next version of Friendband, partially fixing GCU colors and other tweaks. GCU colors already were broken in Un, I made it worse with Friendband and now I'm at a point where just some inventory colors are wrong and I lost some time trying to fix that without result. Un uses unsupported GCU colors to decide on trap behavior, so that's a thing too.
I'm experimenting with different vegetation models to improve the lua world generator. At least I should keep track of matching biome temperatures, so that an ice biome is not directly connected to a volcano biome.
I've experimented with different law map shades in zangband, but it's still unclear how the law map values exactly correlate to monster levels. The monsters still jump in level too much. Also, it's always unclear which direction in the world leads to lower law values and are more dangerous, so discovery difficulty remains random even with a linear law gradient.
The Zangband world needs an obvious visual indication when the player moves to more dangerous zones, other than accidentally running into too high monsters levels and running the other way, hopefully in the right easier direction. I could dump the current law value of the current player position and the direct north/west/east/south law values, but that's a technical solution and not a proper game design solution.
With voronoi zones I could make entire areas the same law value and generate easier zones and more difficult zones, but that messes up city placement that relies on multiple high law zones across the world. For a simpler solution, I could use multiple ground terrain colors to indicate difficulty level of the ground roughly by color and make ground difficulties more naturally visual in the world that way.
Finally, I need to use some time to add a new global quest tracking term to Zangband. With many quests generated, that's mandatory.
Once I have some good Z results, I'll be sure to post it here with patches starting from debian Z 275.
I haven't made any time to inject the lua wilderness into vanilla angband yet. Maybe after I round up one of the other projects.Leave a comment:
-
Zangband 2.7.5pre edit
Dear Droof, how are the tweaks going. I'm going to apply your Map and quests edit to the 275beta I have here. And try for new quest descriptions.
Also wanted to offer this roguelike megapack I've found on archive.org which could be handy
Leave a comment:
-
That's pretty cool, but it doesn't look like an actual map. If you do the geography first, it might help (and make eastern side of mountains drier.)Leave a comment:
-
Nice work, how is it going with linear radial gradient and LUA? I agree that wilderness code in Vanilla Angband is probably the most efficient approach..
Any other ideas you are considering?
What I did to increase the number of quests and casino in town is edit wild2.c lines 142, 148 and 149. Changing the last number to a low number like 2. But I can only find the city-bound quest log ('M' map and 'c' castle keys inside a city), that only shows quests from that city inside the city. That's not useful for keeping track of quests.
For the world, Zangband creates a 2d height map, population map and law map in wild1.c. For all three, it copy / pasted a diamond-square algorithm to create a plasma fractal shape for each map.
The law map is used to decide on spawned monster levels in the wilderness. Since that map is also a plasma fractal, there is no linear level progression in the Zangband wilderness. This makes the wilderness always dangerous to low level characters.
For a more linear level progression, I think a linear radial gradient makes more sense for the law map. That way, the player can progress from the low-level center wilderness to the high-level corners of the wilderness.
Googling on the diamond-square algorithm got me started on terrain generation. I ported the 2d simplex noise algorithm along with the fractal brownian motion algorithm to get a configurable wilderness in lua from C, independent from Zangband. Link
I'm also thinking about mixing a random voronoi diagram with the world to create distinct level-bound flat law areas and a random biome for each area, like a desert, forest, swamp etc. The cities could be placed on the random 2d voronoi points, around which the diagram is generated. World of Warcraft is structured like that too, so this would be the procedural generated version of that.
I wanted to hook the lua wilderness code into Zangband, but since Lua 4 is hardcoded into Zangband and needs major rewriting for Lua 5.3, I can't easily plug it in. Maybe I can more easily use the wilderness code in Vanilla Angband once I find the correct function that's responsible for the town map terrain placement.
=== edit
I updated my script to include a random Voronoi map and 7 ascii biomes (forest, desert, swamp, vulcano, ice, tundra, taiga):
Leave a comment:
-
What I did to increase the number of quests and casino in town is edit wild2.c lines 142, 148 and 149. Changing the last number to a low number like 2. But I can only find the city-bound quest log ('M' map and 'c' castle keys inside a city), that only shows quests from that city inside the city. That's not useful for keeping track of quests.
For the world, Zangband creates a 2d height map, population map and law map in wild1.c. For all three, it copy / pasted a diamond-square algorithm to create a plasma fractal shape for each map.
The law map is used to decide on spawned monster levels in the wilderness. Since that map is also a plasma fractal, there is no linear level progression in the Zangband wilderness. This makes the wilderness always dangerous to low level characters.
For a more linear level progression, I think a linear radial gradient makes more sense for the law map. That way, the player can progress from the low-level center wilderness to the high-level corners of the wilderness.
Googling on the diamond-square algorithm got me started on terrain generation. I ported the 2d simplex noise algorithm along with the fractal brownian motion algorithm to get a configurable wilderness in lua from C, independent from Zangband. Link
I'm also thinking about mixing a random voronoi diagram with the world to create distinct level-bound flat law areas and a random biome for each area, like a desert, forest, swamp etc. The cities could be placed on the random 2d voronoi points, around which the diagram is generated. World of Warcraft is structured like that too, so this would be the procedural generated version of that.
I wanted to hook the lua wilderness code into Zangband, but since Lua 4 is hardcoded into Zangband and needs major rewriting for Lua 5.3, I can't easily plug it in. Maybe I can more easily use the wilderness code in Vanilla Angband once I find the correct function that's responsible for the town map terrain placement.
=== edit
I updated my script to include a random Voronoi map and 7 ascii biomes (forest, desert, swamp, vulcano, ice, tundra, taiga):
Last edited by droof; March 17, 2018, 10:06.Leave a comment:
-
Questing forward!
But I'm working on four games atm for a competition this summer. My programming skills have suffered.
I'll do what I can, thinking starting from 2.7.5, learning from z+ and independent room generators or multiple independent AI.
As droof said, keep the exploration, randomisation, flexible quests, unique monsters/allies + items (Item sets poss).Leave a comment:
-
You are.Go on in there and get your hands dirty! It's a lot of work, but it's not impossible by any means.
Leave a comment:
-
Continuing development on 2.7.5 learning from Z+
Anyone interested in this project?Leave a comment:
-
Good points indeed, especially 2.7.5 vs Z+
I felt the same, for me zang was always about exploration, freedom and progression through quests (variety).
I never liked the forced progression as you say with quests when introduced v2.0+
I really look forward to your changes given your comments so far. Let me know if I can help.
I have some success with using data types limited to int, uint, char, uchar and the cptr and vptr pointer types. Slowly I'm getting better at this, very slowly.
I've played a bunch of Z+Angband and Debian's patched Zangband 2.7.5. Z+Angband has more modern features, but I'm not having much fun playing it. I don't like Z+Angband.
What captures my imagination in Zangband is exploration and the possibility of a quest centric game, more like how a skyrim or world of warcraft would play. Right now, quests are rare, but I can tweak the game so that towns have multiple castles and a selection of multiple quests. I would also be interested in adding more houses with mini-games, like the casino.
The problem I have with Z+Angband is that most quests are kill quests, requiring me to clear out levels while searching for all hidden doors and find that last monster. These quests are no fun for me and they are always too high level for my character, so I'm often forced to level up in the main dungeon.
Zangband 2.7.5 is much more open-ended in quests. Hunt down a bounty, make a delivery, discover a place or retrieve an item, as a player I can pick my own quests and complete them however I feel like. Meanwhile I discover more of the world and find interesting sites on the map like ruins, camps and clearings. Each with their own dangers and rewards. Increasing the number of quests here could work and having the character advance through the quests. The rewards probably need re-balancing then. I'd add more mini-games. Maybe porting over some of the friendband speech and town themes to give the game more personality, because now it's just "some world with towns with blubbering idiots". Shouldn't be too difficult to improve on that and I have the util code anyway
Z+Angband has more modern features, but if I'm going to make small changes while learning C and enjoying the playthroughs, I'd have to pick old Zangband instead. I don't think I can achieve that with small changes in vanilla Angband, not yet at least.Leave a comment:
-
Ah I forgot about those weird types that old bands have – I got rid of all of them when I was maintaining V. If you search and replace cptr with const char * and vptr with void * you might find the code easier to work with.Leave a comment:
-
I have some success with using data types limited to int, uint, char, uchar and the cptr and vptr pointer types. Slowly I'm getting better at this, very slowly.
I've played a bunch of Z+Angband and Debian's patched Zangband 2.7.5. Z+Angband has more modern features, but I'm not having much fun playing it. I don't like Z+Angband.
What captures my imagination in Zangband is exploration and the possibility of a quest centric game, more like how a skyrim or world of warcraft would play. Right now, quests are rare, but I can tweak the game so that towns have multiple castles and a selection of multiple quests. I would also be interested in adding more houses with mini-games, like the casino.
The problem I have with Z+Angband is that most quests are kill quests, requiring me to clear out levels while searching for all hidden doors and find that last monster. These quests are no fun for me and they are always too high level for my character, so I'm often forced to level up in the main dungeon.
Zangband 2.7.5 is much more open-ended in quests. Hunt down a bounty, make a delivery, discover a place or retrieve an item, as a player I can pick my own quests and complete them however I feel like. Meanwhile I discover more of the world and find interesting sites on the map like ruins, camps and clearings. Each with their own dangers and rewards. Increasing the number of quests here could work and having the character advance through the quests. The rewards probably need re-balancing then. I'd add more mini-games. Maybe porting over some of the friendband speech and town themes to give the game more personality, because now it's just "some world with towns with blubbering idiots". Shouldn't be too difficult to improve on that and I have the util code anyway
Z+Angband has more modern features, but if I'm going to make small changes while learning C and enjoying the playthroughs, I'd have to pick old Zangband instead. I don't think I can achieve that with small changes in vanilla Angband, not yet at least.Leave a comment:
-
The different languages
As a long time programmer I give a little insight into your troubles. C was originally designed for very low level, just above machine code, for writing operating systems in. Along came C++ which built on C and with the thinking behind other languages like smalltalk i.e. object orientated, but again not really meant for writing user facing programs. After this people had Visual basic, then java and c#. These are all before we get into scripting languages like python.
So for C manipulation of memory was a primary point and the fore runner languages had no type checking, so C was better.
C++ is still a low level language but follows a different concept, object, rather than the functional style C.
Converting from C to C++ is interesting and converting from C++ to C is even more fun. I have done both in my lifetime.
The best language to write Angband from scratch would in my opinion be C# or Java. They are nearly the same and are easy to follow and code in.
I would not suggest we move the development of Angband to either as legacy code is painful to unpick. If you want to improve things then write front ends in a language that can use the current code. Personally, I don't have the time or energy to do so.Leave a comment:
-
There really shouldn't be any int to pointer conversion in Angband (except in the really old-school winapi.) When there is such conversion, always use size_t as the integer type. That's pretty much it.Leave a comment:
-
Then I have to deal with multiple data types for integers and strings, that's a headache. What's wrong with just using 1 int data type and 1 string data type that'll work on most common systems for most common situations and make life in coding a bit easier?Leave a comment:
Leave a comment: